From: Jasper St. Pierre Date: Tue, 6 Aug 2013 14:30:18 +0000 (-0400) Subject: popupMenu: Make sure to disconnect open-state-changed when the menu item dies X-Git-Tag: archive/raspbian/50.5-1+rpi1~1^2~1013^2^2~3809 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/%22/%22http:/www.example.com/cgi/%22?a=commitdiff_plain;h=41117578c5a6555aeb02663263ec476a8e3b2d82;p=gnome-shell.git popupMenu: Make sure to disconnect open-state-changed when the menu item dies --- diff --git a/js/ui/popupMenu.js b/js/ui/popupMenu.js index 57d9b49e2..fce1d2fd7 100644 --- a/js/ui/popupMenu.js +++ b/js/ui/popupMenu.js @@ -872,7 +872,11 @@ const PopupMenuBase = new Lang.Class({ // separator's adjacent siblings change visibility or position. // open-state-changed isn't exactly that, but doing it in more // precise ways would require a lot more bookkeeping. - this.connect('open-state-changed', Lang.bind(this, function() { this._updateSeparatorVisibility(menuItem); })); + let openStateChangeId = this.connect('open-state-changed', Lang.bind(this, function() { this._updateSeparatorVisibility(menuItem); })); + let destroyId = menuItem.connect('destroy', Lang.bind(this, function() { + this.disconnect(openStateChangeId); + menuItem.disconnect(destroyId); + })); } else if (menuItem instanceof PopupBaseMenuItem) this._connectItemSignals(menuItem); else